package algo.A00_前置基础;

/**
 * 10进制转换为其他进制问题
 */
public class M01_进制转换 {
    public static void main(String[] args) {
        /**
         * 将0~15的整数转换为16进制表示
         */
        int num = 8;
        char result = (char) (num < 10 ? (num + '0') : (num - 10 + 'A'));
        System.out.println(num + "的16进制表示:" + result);

        /**
         * 将任意正整数转换为16进制
         */
        num = 125;
        String hex = "";//16进制表示
        int shang = num;//商,初始值为num自身
        int yu;//余数
        //商为0时说明OK了
        while (shang != 0) {
            yu = shang % 16;
            shang /= 16;
            result = (char) (yu < 10 ? (yu + '0') : (yu - 10 + 'A'));
            hex = result + hex;//要把后算的余数放前面，所以不能写成hex += result
        }
        System.out.println(num + "的16进制表示:" + hex);

        /**
         * 将任意正整数转换为2进制
         */
        num = 80;
        String bin = "";//2进制表示
        shang = num;//商,初始值为num自身
        //商为0时说明OK了
        while (shang != 0) {
            yu = shang % 2;
            shang /= 2;
            bin = yu + bin;//要把后算的余数放前面，所以不能写成bin += yu
        }
        System.out.println(num + "的2进制表示:" + bin);
    }
}
